Switch networks, or fabrics, for transmitting packets between two or more nodes are known. Typically, a packet, sometimes referred to alternatively as a sequence, includes multiple frames, with each frame including a header and a payload, such as data. Switch fabrics include a plurality of switches arranged to permit transmission of frames over different paths, or channels. Each node has a port adapted for connection to a respective channel. One illustrative type of switch fabric is Fibre Channel, in which the nodes connected to the fabric are referred to as N.sub.-- Ports.
Illustrative nodes are connected to various types of systems or node clients, such as work stations, data storage devices, or arrays, and network interfaces. A network interface node client is adapted for connection to a network, such as a local area network, thereby permitting communication between other nodes connected to the switch fabric and nodes connected to the network. Although generally a node is capable of both transmitting and receiving packets, in the transmission of a given packet, the node transmitting the packet is referred to hereinafter as the transmitting, or source node and the node receiving the packet is referred to hereinafter as the receiving, or destination node.
Each node includes circuitry for receiving frames from a source node over the respective channel, processing received frames, and transmitting processed frames to one or more destination nodes over the respective channel. Thus, each node has dedicated frame receiving, processing, and transmitting circuitry associated therewith.
Various techniques are employed for optimizing transmission of frames through a fabric in order to minimize congestion on a particular path and thus, to reduce transmission time. However, such transmission optimization may result in frames of a given packet arriving at the destination node in an order different from the order in which the frames are arranged in the packet prior to transmission.
One technique for reordering frames received at a node out of order is to generate and store a memory entry corresponding to each of the received frames, including a "sequence count" identifying the sequential position of the frame within its associated packet. Once all of the frames of a packet are received, a processor executes a program to sort the memory entries by sequence count. However, since the memory includes as many entries as there are frames in the packet, this technique tends to be inefficient in terms of both memory requirement for storing the entries and processing time for sorting the entries.